package response

// Response 统一响应结构
type Response struct {
	Code    int         `json:"code"`
	Message string      `json:"message"`
	Data    interface{} `json:"data"`
	Success bool        `json:"success"`
}

// Error 实现error接口
func (r *Response) Error() string {
	return r.Message
}

// Success 成功响应
func Success(data interface{}) *Response {
	return &Response{
		Code:    200,
		Message: "Success",
		Data:    data,
		Success: true,
	}
}

// Error 错误响应
func Error(code int, message string) *Response {
	return &Response{
		Code:    code,
		Message: message,
		Data:    nil,
		Success: false,
	}
}

// ServerError 服务器错误
func ServerError(message string) *Response {
	return Error(500, message)
}

// NotFound 资源不存在
func NotFound(message string) *Response {
	return Error(404, message)
}

// Unauthorized 未授权
func Unauthorized(message string) *Response {
	return Error(401, message)
}

// Forbidden 禁止访问
func Forbidden(message string) *Response {
	return Error(403, message)
}
